package com.yunxin.core.application.dto.product;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author zero°
 * @since 2023-07-17
 */
@Data
@Schema(description = "更多产品简略信息响应对象")
public class ProductMoreSimpleInfoDTO implements Serializable {

    /**
     * 产品id
     */
    @Schema(description = "产品id")
    private Long productId;
    /**
     * 产品名称
     */
    @Schema(description = "产品名称")
    private String productName;
    /**
     * 产品图片
     */
    @Schema(description = "产品图片")
    private String productImage;
    /**
     * 最高可借金额
     */
    @Schema(description = "最高可借金额")
    private BigDecimal highestBorrowableAmount;
    /**
     * 标签
     */
    @Schema(description = "标签")
    private List<String> productLabelingList;
    /**
     * 特殊卖点
     */
    @Schema(description = "特殊卖点")
    private String sellingPoint;

    /**
     * 参考利率(JSON实体)
     */
    @Schema(description = "参考利率(JSON实体)")
    private ReferenceRate referenceRate;


    /**
     * uv联登产品个人授权协议
     */
    @Schema(hidden = true)
    private String userProtocol;

    /**
     * uv联登产品个人授权协议
     */
    @Schema(description = "uv联登产品个人授权协议")
    private List<userProtocol> userProtocolList;

    @Data
    public static class ReferenceRate implements Serializable {
        /**
         * 最低借款周期
         */
        @Schema(description = "最低借款周期")
        private BigDecimal minReferenceRate;
        /**
         * 最低借款周期期限单位 1.%天 2.%周 3.%月 4.%年
         */
        @Schema(description = "最低借款周期期限单位 1.%天 2.%周 3.%月 4.%年")
        private Integer minReferenceRateUnit;
        /**
         * 最高借款周期
         */
        @Schema(description = "最高借款周期")
        private BigDecimal maxReferenceRate;
        /**
         * 最高借款周期期限单位 1.%天 2.%周 3.%月 4.%年
         */
        @Schema(description = "最高借款周期期限单位 1.%天 2.%周 3.%月 4.%年")
        private Integer maxReferenceRateUnit;

    }

    @Data
    public static class userProtocol implements Serializable {

        /**
         * uv联登产品个人授权协议名称
         */
        private String name;

        /**
         * uv联登产品个人授权协议地址
         */
        private String url;
    }

}
